class Matricula < ActiveRecord::Base

  after_save :do_after_save
  after_destroy :modificar_coeficiente

  scope_out :este_mes, :conditions=>"MONTH(fecha)=MONTH(CURDATE()) and YEAR(fecha)=YEAR(CURDATE())"
  
  belongs_to :persona
  belongs_to :instructor

  belongs_to :visita
  
  # VALIDACIONES
  
  validates_presence_of :instructor_id, :message=>"no encontrado para asignar la matricula."
  validates_presence_of :persona_id, :message=>'^No se encontr&oacute; a la persona a matricular.'
  validates_presence_of :fecha, :message=>'^Debe especificar la fecha de la matricula.'
  validates_presence_of :visita, :message=>'^La matricula debe corresponder a una visita.'
  
  def validate_on_save
    K_LOGGER.debug "matricula: validate_on_save"
    K_LOGGER.debug visita
    K_LOGGER.debug matricula
    # para poder matricularse la visita debe estar registrada en el mismo mes.
    unless visita and ((visita.fecha.month==fecha.month) and (visita.fecha.year==fecha.year)) then
      errors.add "", "La matricula debe corresponder a una visita del mismo mes."
    end
  end
  
  def validate_on_create
    # para matricularse no debe ser alumno
    if persona and persona.es_alumno? then
      errors.add "","Esta persona ya es alumna."
    end
  end
  
  private
  # si la persona quedo sin visitas,etc supongo que era perfil ya que fue matriculada
  def modificar_coeficiente
    if persona.evasions.size ==0 and persona.matriculas.size==0 and persona.visitas.size==0 then
      persona.update_attribute(:coeficiente_id, Coeficiente::PERFIL)
    else
      persona.update_attribute(:coeficiente_id, persona.actualizar_coeficiente)
    end
  end
  
  def set_inicio_practicas
    return unless persona.inicio_practicas.nil?
    K_LOGGER.debug fecha
    persona.update_attribute(:inicio_practicas,fecha)
  end
  
  # no se como hacer los juntos arriba asi que los meto los dos aca.
  def do_after_save
    K_LOGGER.debug "do_after_save"
    modificar_coeficiente
    set_inicio_practicas
  end
  
end